/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package desk;

import hibernate.User;
//import
import ejb.Security;
import hibernate.UserRole;
import java.io.Serializable;
import javax.faces.application.FacesMessage;
import javax.faces.bean.*;
import javax.faces.context.FacesContext;

/**
 * Сессионный бин, отвечающий за авторизацию пользователя
 * @author AGolubinskyy
 */
@ManagedBean
@SessionScoped
public class LoginBean implements Serializable {

    private Security security = null;
    // Объявляем ClientController
    @ManagedProperty(value = "#{webClientController}")
    private WebClientController clientController;
    
    //Создаем неободимый метод для ClientController'а
    public void setClientController(WebClientController clientController) {
        this.clientController = clientController;
        // получаем необходимые объекты
        security = clientController.getServerManager().getSecurity();
    }
    private String login, password;

    public String getName() {
        return security.getCurrentUser().getFirstName();
    }

    public String getLogin() {
        return (login);
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getPassword() {
        return (password);
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public User getUser() {
        return security.getCurrentUser();       
    }
    
    public String getRole (){
        return security.getCurrentUser().getRole().getRoleName().toLowerCase();
    }
    
    public boolean isLogedIn(){
        return security.isAuthorized();
    }
    public String authorize() {
        security.authorize(login, password);
        if (security.isAuthorized()) {
            return security.getCurrentUser().getRole().getRoleName().toLowerCase()+"?faces-redirect=true";
        } else {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Please try different login/password."));
            return null;
        }
    }

    public String logout() {
        security.logOut();//
        return "index"+"?faces-redirect=true";
    }
}
